import type { Dayjs } from 'dayjs';

import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace LawCaseCoreApi {
  /** 案件核心信息管理信息 */
  export interface CaseCore {
    id: string; // 主键ID
    naturalYear: string; // 所属年度
    naturalYm: number; // 所属年月
    caseNo?: string; // 案号
    caseCause?: string; // 案由
    caseCauseCode: string; // 案由编码（依据最高法案由规定）
    courtName?: string; // 审理法院
    courtCode: string; // 法院编码
    judgmentDate?: Dayjs | string; // 裁判时间
    trialProcedure?: string; // 审理程序（一审/二审/再审等）
    judgmentResult: string; // 裁判结果
    caseType: string; // 案件类型（民事/刑事/行政/执行）
    caseSource: string; // 案件来源（裁判文书网/法院系统）
    caseLevel: string; // 法院级别（最高法/高院/中院/基层）
    status: number; // 状态 0 归档 1有效
    isPublished: number; // 是否已公开
    vectorProcessed: number; // 是否向量化
    vectorDbId: string; // 向量数据库ID
    vectorCollectionId: number; // 向量集合id
    vectorIds: string; // 段落向量库ids
    kgCaseId: string; // 知识图谱案件节点ID
    aiProcessStatus?: number; // ai处理状态 0 待处理 1处理中 2处理完成 3处理失败
    aiProcessTime: Dayjs | string; // ai处理时间
    aiConfidence: number; // AI分析置信度（如分类、相似度匹配的置信度，0-100.00
    aiCategoryTags: string; // AI自动分类标签（AI识别的案件细分类型，如：{"主标签":"合同纠纷","子标签":["买卖合同","违约责任","货款支付"]}）
    aiKeywords: string; // AI关键词提取（核心语义关键词，如：["买卖合同","拖欠货款","违约金","诉讼时效"]）
    aiKeySentences: string; // AI提取的关键句
    aiAutoSummary: string; // AI自动摘要（AI生成的案件300字内简短摘要，便于快速浏览）
    aiDispiteKeywords: string; // AI争议焦点关键字
    aiSimilarCaseIds: string; // AI相似度匹配案件id
    aiLawArticleRecommend: string; // AI法律条文推荐（AI匹配的相关法条，如：{"民法典":"第577条（违约责任）、第626条（价款支付时间）","民事诉讼法":"第144条（缺席判决）"}）
    aiRiskLevel: number; // AI风险评估等级（0-无风险；1-低风险；2-中风险；3-高风险，基于案件复杂度、执行难度等评估）
  }
  /** 案件信息管理信息 */
  export interface CaseInfo {
    id: string; // 主键ID
    naturalYear: string; // 所属年度
    naturalYm: number; // 所属年月
    caseNo?: string; // 案号
    caseCause?: string; // 案由
    caseCauseCode: string; // 案由编码（依据最高法案由规定）
    courtName?: string; // 审理法院
    courtCode: string; // 法院编码
    judgmentDate?: Dayjs | string; // 裁判时间
    trialProcedure?: string; // 审理程序（一审/二审/再审等）
    judgmentResult: string; // 裁判结果
    caseType: string; // 案件类型（民事/刑事/行政/执行）
    caseSource: string; // 案件来源（裁判文书网/法院系统）
    caseLevel: string; // 法院级别（最高法/高院/中院/基层）
    status: number; // 状态 0 归档 1有效
    isPublished: number; // 是否已公开
    vectorProcessed: number; // 是否向量化
    vectorDbId: string; // 向量数据库ID
    vectorCollectionId: number; // 向量集合id
    vectorIds: string; // 段落向量库ids
    kgCaseId: string; // 知识图谱案件节点ID
    aiProcessStatus?: number; // ai处理状态 0 待处理 1处理中 2处理完成 3处理失败
    aiProcessTime: Dayjs | string; // ai处理时间
    aiConfidence: number; // AI分析置信度（如分类、相似度匹配的置信度，0-100.00
    aiCategoryTags: string; // AI自动分类标签（AI识别的案件细分类型，如：{"主标签":"合同纠纷","子标签":["买卖合同","违约责任","货款支付"]}）
    aiKeywords: string; // AI关键词提取（核心语义关键词，如：["买卖合同","拖欠货款","违约金","诉讼时效"]）
    aiKeySentences: string; // AI提取的关键句
    aiAutoSummary: string; // AI自动摘要（AI生成的案件300字内简短摘要，便于快速浏览）
    aiDispiteKeywords: string; // AI争议焦点关键字
    aiSimilarCaseIds: string; // AI相似度匹配案件id
    aiLawArticleRecommend: string; // AI法律条文推荐（AI匹配的相关法条，如：{"民法典":"第577条（违约责任）、第626条（价款支付时间）","民事诉讼法":"第144条（缺席判决）"}）
    aiRiskLevel: number; // AI风险评估等级（0-无风险；1-低风险；2-中风险；3-高风险，基于案件复杂度、执行难度等评估）
    contentHash?: string; // 内容SHA256哈希
    partyInfo: object; // 当事人信息结构化数据(zlib压缩)
    disputeFocus: object; // 争议焦点(zlib压缩)
    caseSummary: object; // 案件概述(zlib压缩)
    courtFindings: object; // 法院查明(zlib压缩)
    courtOpinion: object; // 法院认为(zlib压缩)
    fullText: object; // 全文压缩
    textLength: object; // 原文长度
    judicialRules: string; // 适用法条
  }
}

/** 查询案件信息管理分页 */
export function getCaseCorePage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<LawCaseCoreApi.CaseCore>>(
    '/law/case-core/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询案件核心信息管理详情 */
export function getCaseCore(id: string) {
  return requestClient.get<LawCaseCoreApi.CaseCore>(
    `/law/case-core/get?id=${id}`,
  );
}
/** 查询案件信息管理详情 */
export function getCaseInfo(id: string) {
  return requestClient.get<LawCaseCoreApi.CaseInfo>(
    `/law/case-core/get-info?id=${id}`,
  );
}
/** 新增案件核心信息管理 */
export function createCaseCore(data: LawCaseCoreApi.CaseCore) {
  return requestClient.post('/law/case-core/create', data);
}
/** 新增案件信息管理 */
export function createCaseInfo(data: LawCaseCoreApi.CaseInfo) {
  return requestClient.post('/law/case-core/create-info', data);
}
/** 修改案件核心信息管理 */
export function updateCaseCore(data: LawCaseCoreApi.CaseCore) {
  return requestClient.put('/law/case-core/update', data);
}
/** 修改案件信息管理 */
export function updateCaseInfo(data: LawCaseCoreApi.CaseInfo) {
  return requestClient.put('/law/case-core/update-info', data);
}

/** 删除案件信息管理 */
export function deleteCaseCore(id: string) {
  return requestClient.delete(`/law/case-core/delete?id=${id}`);
}

/** 批量删除案件信息管理 */
export function deleteCaseCoreList(ids: string[]) {
  return requestClient.delete(
    `/law/case-core/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出案件信息管理 */
export function exportCaseCore(params: any) {
  return requestClient.download('/law/case-core/export-excel', { params });
}
/** 下载案件导入模板 */
export function importCaseTemplate() {
  return requestClient.download('/law/case-core/get-import-template');
}

/** 导入案件信息管理 */
export function importCaseCore(file: File, updateSupport: boolean) {
  return requestClient.upload('/law/case-core/import', {
    file,
    updateSupport,
  });
}
